package oj;

public class LC50 {
    //快速幂+迭代
    public double myPow(double x, int n) {
        long N=n;
        return N>=0?quick(x,N):1.0/quick(x,-N);

    }
    private static double quick(double x, long N){
        double ans=1.0;
        double double_x=x;
        while(N>0){
            if(N%2==1){
                ans*=double_x;
            }
            double_x*=double_x;
            N/=2;
        }
        return ans;
    }

    //快速幂+递归
//    public double myPow(double x, int n) {
//        long N = n;
//        return N >= 0 ? quick(x, N) : 1.0 / quick(x, -N);
//
//    }
//
//    private static double quick(double x, long N) {
//        if (N == 0) {
//            return 1.0;
//        }
//        double y = quick(x, N / 2);
//        return N % 2 == 0 ? y * y : y * y * x;
//    }
}
